
#ifndef VERTEX_PROCESSOR_H_INCLUDED
#define VERTEX_PROCESSOR_H_INCLUDED

#include "geometry.h"

#define MODELMATRIX 0
#define VIEWMATRIX 1
#define PROJECTIONMATRIX 2
#define TEXTUREMATRIX 3

struct VERTEX {
    VECTOR4 coord;
    VECTOR3 normal;
    VECTOR4 color;
    VECTOR4 texcoord1;
};

struct INTERNAL_VERTEX {
    VECTOR4 normcoord;
    VECTOR3 normal;
    VECTOR4 color1;
    VECTOR4 color2;
    VECTOR4 texcoord1;
    char clipcode;
};

void sqsLoadIdentity(int index);
void sqsPerspective(float fovh, float aspectratio, float near, float far);
void sqsViewer(float ox, float oy, float oz, VECTOR3 center, VECTOR3 up);
void sqsScale(int index, float sx, float sy, float sz);
void sqsPushVertex3f(float x, float y, float z);
void sqsRotateX(int index, float angle);
void sqsRotateY(int index, float angle);
void sqsRotateZ(int index, float angle);
void sqsTranslate(int index, float tx, float ty, float tz);
void sqsCloneVertex(struct INTERNAL_VERTEX *output, struct INTERNAL_VERTEX *input);
void sqsColor3f(float r, float g, float b);
void sqsColor4f(float r, float g, float b, float a);


#endif // VERTEX_PROCESSOR_H_INCLUDED
